/*
 * @Author: yli
 * @Date: 2021-05-02 23:18:38
 * @LastEditors: yli
 * @LastEditTime: 2021-05-03 00:13:12
 * @Description: file content
 */

#include "program.h"

#include "key_scan.h"
#include "mode.h"

void program(void)
{
    static uint8_t AM_mode = 0;    // 记录手自动模式: 0 表示自动,  1 表示手动
    static DistortionMode DT_mode = Normal;  // 记录失真模式
    static uint8_t time_count = 0; // 记录状态保持的时间

    uint8_t status_change_flag = 0;

    //	长按Key1改变手自动模式
    if (Key1Status.pressed_nT >= 50 && (!KeyPressing(Key1)))
    {
        AM_mode = !(AM_mode);
        DT_mode = Normal;
        KeyStatusClean();
        status_change_flag = 1;
    }

    if ((AM_mode && Key2Status.pressed) && (!KeyPressing(Key2))) // 手动模式下按Key2改变失真模式
    {
        DT_mode = (DistortionMode)((DT_mode + 1) % ModeNum);
        KeyStatusClean();
        status_change_flag = 1;
    }
    else if ((!AM_mode) && time_count >= 100) // 自动模式下到时间改变模式
    {
        DT_mode = (DistortionMode)((DT_mode + 1) % ModeNum);
        KeyStatusClean();
        status_change_flag = 1;
    }

    if (status_change_flag)
    {
        time_count = 0;
        ChangeMode(DT_mode);
    }
    else if (!AM_mode) // 自动模式下状态不改变则计时变量累加
    {
        time_count++;
    }
}
